// IModelTrainService.java
package com.ruoyi.insect.service;

import com.ruoyi.insect.domain.TrainingTask;
import com.ruoyi.common.dto.TrainingRequest;

import java.util.List;
import java.util.Map;

/**
 * 训练任务Service接口
 *
 * @author ruoyi
 * @date 2024-03-20
 */
public interface ITrainingService
{


    /**
     * 异步开始训练
     */
    void startTrainingAsync(TrainingTask task);

    /**
     * 导出用户标注数据为COCO格式
     */
    String exportUserAnnotationsToCoco();

    /**
     * 分割数据集
     */
    String splitDataset();

    /**
     * 生成训练配置
     */
    String generateTrainingConfig(String datasetPath, TrainingTask task);

    /**
     * 启动Paddle训练
     *
     * @return
     */
    boolean startPaddleTraining(String taskId, String configPath);

    /**
     * 停止训练
     */
    void stopTraining(String taskId);

    /**
     * 获取训练状态
     */
    TrainingTask getTrainingStatus(String taskId);

    /**
     * 获取训练历史
     */
    List<TrainingTask> getTrainingHistory();

    /**
     * 获取训练日志
     */
    String getTrainingLog(String taskId);

    /**
     * 获取模型路径
     */
    String getModelPath(String taskId);

    /**
     * 系统诊断
     */
    Map<String, Object> diagnoseSystem();

    Map<String, Object> debugTrainingEnvironment();

    Map<String, Object> testSimpleTraining();

    String startTraining(TrainingRequest req);

}
